package com.xinhe.web.selfpay;

import com.wechat.pay.java.core.Config;
import com.wechat.pay.java.core.RSAAutoCertificateConfig;
import com.wechat.pay.java.core.notification.NotificationConfig;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.ResourceLoader;

@Configuration
public class SingletonConfig {
    @Autowired
    private ResourceLoader resourceLoader;
    /** 商户号 */
    public static String merchantId = "1616713201";
    /** 商户API私钥路径。*/
    public static String privateKeyPath = "";
    /** 商户证书序列号 */
    public static String merchantSerialNumber = "57906AE4C493222D0DDD03D81A3A2F2AA93B8D19";
    /** 商户APIV3密钥 */
    public static String apiV3Key = "12345678901234567890ABCDEFGHIJKL";

    @Bean
    public NotificationConfig notificationConfig() {
        String privateKeyPath = null;
        //todo 注意本地运行的话可以使用这种绝对路径的方式，线上的话使用相对路径，记得改成docker容器内部的证书路径
        //本地运行，打开
        /*Resource resource = resourceLoader.getResource("classpath:cert/apiclient_key.pem");
        try {
            privateKeyPath = resource.getFile().getPath();
        } catch (IOException e) {
            e.printStackTrace();
        }*/
        //线上运行，打开
        privateKeyPath="/zhanghou/apiclient_key.pem";
        // 使用自动更新平台证书的RSA配置
        // 一个商户号只能初始化一个配置，否则会因为重复的下载任务报错
        NotificationConfig config = new RSAAutoCertificateConfig.Builder()
                .merchantId(merchantId)
                .privateKeyFromPath(privateKeyPath)
                .merchantSerialNumber(merchantSerialNumber)
                .apiV3Key(apiV3Key)
                .build();
        return config;
    }

    @Bean
    public Config config() {
        String privateKeyPath = null;
        //todo 注意本地运行的话可以使用这种绝对路径的方式，线上的话使用相对路径，记得改成docker容器内部的证书路径
        //本地运行，打开
        /*Resource resource = resourceLoader.getResource("classpath:cert/apiclient_key.pem");
        try {
            privateKeyPath = resource.getFile().getPath();
        } catch (IOException e) {
            e.printStackTrace();
        }*/
        //线上运行，打开
        privateKeyPath="/zhanghou/apiclient_key.pem";
        // 使用自动更新平台证书的RSA配置
        // 一个商户号只能初始化一个配置，否则会因为重复的下载任务报错
        Config config = new RSAAutoCertificateConfig.Builder()
                .merchantId(merchantId)
                .privateKeyFromPath(privateKeyPath)
                .merchantSerialNumber(merchantSerialNumber)
                .apiV3Key(apiV3Key)
                .build();
        return config;
    }

}
